﻿using System.Net;
using System.Security.Cryptography;
using System.Text;
using TencentCloud.Common;
using TencentCloud.Common.Profile;
using TencentCloud.Scf.V20180416.Models;
using TencentCloud.Sms.V20210111;
using TencentCloud.Sms.V20210111.Models;



namespace ZenSystemService.Api.Business
{
    public class TencentSmsBusiness: BaseBusinessModel
    {
        #region init method
        private static TencentSmsBusiness _businessModel = null;
        public static TencentSmsBusiness Instance
        {
            get
            {
                lock (_lockObj)
                {
                    if (_businessModel == null)
                        _businessModel = new TencentSmsBusiness();
                    return _businessModel;
                }
            }
        }

        #endregion



        /// <summary>
        /// 发送验证码短信
        /// </summary>
        /// <param name="SendPhone">传入手机号不需要+86</param>
        /// <param name="VerificationCode"></param>
        /// <returns></returns>
        public bool SendVerificationCodeSMS(string SendPhone,string VerificationCode,out string msg)
        {
            msg = "";
            try
            {
                // 实例化一个认证对象，入参需要传入腾讯云账户 SecretId 和 SecretKey，此处还需注意密钥对的保密
                // 代码泄露可能会导致 SecretId 和 SecretKey 泄露，并威胁账号下所有资源的安全性。以下代码示例仅供参考，建议采用更安全的方式来使用密钥，请参见：https://cloud.tencent.com/document/product/1278/85305
                // 密钥可前往官网控制台 https://console.cloud.tencent.com/cam/capi 进行获取
                Credential cred = new Credential
                {
                    SecretId = "AKIDZ4PXVIrEXh6LOFyWtCPSPKAC90irws09",
                    SecretKey = "2tXyBAvZ7c0CB2mKrAJH6hASWN0RsCML"
                };
                // 实例化一个client选项，可选的，没有特殊需求可以跳过
                ClientProfile clientProfile = new ClientProfile();
                // 实例化一个http选项，可选的，没有特殊需求可以跳过
                HttpProfile httpProfile = new HttpProfile();
                httpProfile.Endpoint = ("sms.ap-shanghai.tencentcloudapi.com");
                clientProfile.HttpProfile = httpProfile;

                // 实例化要请求产品的client对象,clientProfile是可选的
                SmsClient client = new SmsClient(cred, "ap-guangzhou", clientProfile);
                // 实例化一个请求对象,每个接口都会对应一个request对象
                SendSmsRequest req = new SendSmsRequest();
                req.PhoneNumberSet = new string[] { "+86"+ SendPhone };
                req.SmsSdkAppId = "1400443060";//appid 
                req.TemplateId = "2188952";//模板ID
                req.SignName = "深圳诺亚第科技发展";
                req.TemplateParamSet = new string[] { VerificationCode };
                // 返回的resp是一个SendSmsResponse的实例，与请求对象对应
                SendSmsResponse resp = client.SendSmsSync(req);
                msg = resp.SendStatusSet[0].Message;
                return resp.SendStatusSet[0].Code.ToUpper()=="OK"?true:false;   

             //   string result = AbstractModel.ToJsonString(resp);
             // 输出json格式的字符串回包
             // Console.WriteLine(result);
            }
            catch (Exception e)
            {
                msg=e.Message;
                return false;
              //  Console.WriteLine(e.ToString());
            }
        }


        


       

    }
}
